//同样求质因数，然后套公式：(p1^0 + p1^1 + ... + p1^c1) * ... * (pk^0 + pk^1 + ... + pk^ck)
#include <iostream>
#include <unordered_map>
using namespace std;

typedef long long ll;
typedef pair<ll, ll> PLL;
const ll mod = 1e9 + 7;      //取模
ll n, a;                     //获取输入
ll ans = 1;                  //存储答案
unordered_map<ll, ll> prime; //无序哈希表，用来存质数

int main()
{
    cin >> n;
    while (n--)
    {
        cin >> a;
        //以上为获取输入
        //以下为试除法分解质因数
        for (int i = 2; i <= a / i; ++i)
            while (a % i == 0)
                a /= i, prime[i]++;
        if (a > 1)
            prime[a]++;
    }
    for (PLL i : prime)
    {
        ll t = 1; //中间工具值，用来存储某一个质因数的结果
        while (i.second--)
            t = (t * i.first + 1) % mod; //递推求(p1^0 + p1^1 + ... + p1^c1)的值
        ans = ans * t % mod;
    }
    cout << ans;
    return 0;
}